1N = 5
2
3def aqcuire():
4 while heap.lock != 0:
5 sys_sched()
6 heap.lock = 1
7
8def release():
9 heap.lock = 0
10
11def Worker():
12 aqcuire()
13 sys_sched()
14 if heap.tot == 0:
15 heap.tot += 1
16 sys_sched()
17 release()
18 heap.finished += 1
19
20def main():
21 heap.finished = 0
22 heap.tot = 0
23 heap.lock = 0
24 for i in range(N):
25 sys_spawn(Worker)
26 while heap.finished < N:
27 sys_sched()
28 sys_write(f'Bought {heap.tot} bread.')
29
30# Outputs:
31# Bought 1 bread.